<?php
namespace Admin\Controller;
use Think\Controller;
// 后台用户模块
class UserController extends CommonController {

	/**
	 * 用户列表
	 * @internal 此方法显示用户列表
	 * @access public
	 * @param string $numPerPage
	 * @param string $pageNum
	 * @param string $keyword 搜索关键字
	 * @since 2014-10-14 14:15:59
	 * @author FrankKung <kongfanjian@andlisoft.com>
	 */
	public function index() {
		// 获取分页等参数
		$numPerPage = I('post.numPerPage', 20);
		$pageNum    = I('post.pageNum', 1);
		$keyword    = I('post.keyword');

		// 模型
		$User = D("User");

		// 模糊搜索
		C('DB_LIKE_FIELDS','account|nickname'); // 设置模糊查询字段
		if (!empty($keyword)) { // 搜索关键字
			$map['account|nickname'] = $keyword;
		}

		// 获取用户列表
		$list = $User->where($map)->select();
		$this->assign('list', $list);

		// 分页信息
		$total = $User->where($map)->count($id);
		$this->assign('total', $total);
		$this->assign('numPerPage', $numPerPage);
		$this->assign('pageNum', $pageNum);

		// 显示
		$this->display();
	}

	/**
	 * 新增用户
	 * @internal 此方法用于新增用户
	 * @access public
	 * @param string $account
	 * @param string $nickname
	 * @param string $password
	 * @param string $email
	 * @param string $remark
	 * @since 2014-10-14 16:02:52
	 * @author FrankKung <kongfanjian@andlisoft.com>
	 */
	public function add() {
		// 模型
		$User = D("User");

		if (!IS_POST) { // 显示新增页面
			$this->display();
		} else {
			// 表单数据
			$data = array(
				'account'		=> I('post.account'),
				'nickname'		=> I('post.nickname'),
				'password'		=> md5(I('post.password')),
				'email'			=> I('post.email'),
				'remark'		=> I('post.remark'),
				'create_time'	=> time(),
			);

			$id = $User->add($data);
			echo $User->getLastSql();
			var_dump($id, $User);
			if (false !== $id) {
				$this->DwzCallback('增加用户成功');
			} else {
				$this->DwzCallback('增加用户失败', '', 300);
			}
		}
	}

	/**
	 * 删除用户
	 * @internal 此方法用于新增用户
	 * @access public
	 * @param string $id
	 * @since 2014-10-13 11:10:49
	 * @author FrankKung <kongfanjian@andlisoft.com>
	 */
	public function delete() {
		// 模型
		$User = D("User");
		// 条件
		$map['id'] = I('get.id', '0');

		$ret = $User->where($map)->delete();
		if (false !== $ret) {
			$this->DwzCallback('删除用户成功');
		} else {
			$this->DwzCallback('删除用户失败', '', 300);
		}
	}

	/**
	 * 编辑用户
	 * @internal 此方法用于编辑用户
	 * @access public
	 * @param string $id
	 * @param string $nickname
	 * @param string $email
	 * @param string $remark
	 * @param string $status
	 * @since 2014-10-14 14:46:23
	 * @author FrankKung <kongfanjian@andlisoft.com>
	 */
	public function edit() {
		// 参数
		$id = I('get.id', '0');
		// 模型
		$User = D("User");
		// 条件
		$map['id'] = $id;

		if (!IS_POST) { // 显示编辑页面
			$info = $User->where($map)->find();
			$this->assign('info', $info);
			$this->display();
		} else { // 保存数据
			$this->checkAccount();
			// 表单数据
			$data = array(
				'nickname'		=> I('post.nickname'),
				'email'			=> I('post.email'),
				'status'		=> I('post.status'),
				'remark'		=> I('post.remark'),
				'update_time'	=> time(),
			);
			$ret = $User->where($map)->save($data);
			if (false !== $ret) {
				$this->DwzCallback('编辑用户成功');
			} else {
				$this->DwzCallback('编辑用户失败', '', 300);
			}
		}
	}

	/**
	 * 修改密码
	 * @internal 此方法用于修改用户密码
	 * @access public
	 * @param string $id
	 * @param string $password
	 * @param string $verify
	 * @since 2014-10-14 15:36:43
	 * @author FrankKung <kongfanjian@andlisoft.com>
	 */
	public function password() {
		if (!IS_POST) {
			$this->display();
		} else {
			$id			= I('get.id');
			$password	= I('post.password');
			$verify		= I('post.verify');
			if(!$this->check_verify($verify)){
				$this->DwzCallback('验证码输入错误', null, 300);
			}

			if( !preg_match( '/^[^\d]\w{5,}$/i', $password ) ){
				$this->DwzCallback('密码格式不正确', null, 300);
			}else{
				$data = array(
					'id'			=> $id,
					'password'		=> md5($password),
					'update_time'	=> time()
				);
				$User = M('User');
				$map['id'] = $id;
				$ret = $User->where($map)->save($data);
				if($ret){
					$this->DwzCallback('修改密码成功');
				}else{
					$this->DwzCallback('修改密码失败','',300);
				}
			}
		}
	}

	/**
	 * 检测用户信息
	 * @internal 此方法用于新增用户时检测用户信息
	 * @access public
	 * @param string $name
	 * @param string $status
	 * @param string $remark
	 * @param string $pid
	 * @since 2014-10-14 16:02:52
	 * @author FrankKung <kongfanjian@andlisoft.com>
	 */
	public function checkInfo() {
		$account = I('get.account');
		if (!preg_match('/^[a-z]\w{3,}$/i', $account)) {
			$this->ajaxReturn( '必须是字母，且4位以上！');
		} else {
			$User = M("User");
			$result  =  $User->getByAccount($account);
			if($result) {
				$this->ajaxReturn('该用户名已经存在！');
			} else {
				$this->ajaxReturn("true");
			}
		}
	}

}